package com.ruoyi.wechat.service.impl;

import java.util.Date;
import java.util.List;

import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.wechat.domain.Camp;
import com.ruoyi.wechat.domain.ScenicSpots;
import com.ruoyi.wechat.mapper.CampMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.wechat.mapper.MessageMapper;
import com.ruoyi.wechat.domain.Message;
import com.ruoyi.wechat.service.IMessageService;

/**
 * 营地消息Service业务层处理
 * 
 * @author 孙伟光
 * @date 2024-07-29
 */
@Service
public class MessageServiceImpl implements IMessageService 
{
    @Autowired
    private MessageMapper messageMapper;

    @Autowired
    private CampMapper campMapper;

    /**
     * 查询营地消息
     * 
     * @param messageId 营地消息主键
     * @return 营地消息
     */
    @Override
    public Message selectMessageByMessageId(String messageId)
    {
        return messageMapper.selectMessageByMessageId(messageId);
    }

    /**
     * 查询营地消息列表
     * 
     * @param message 营地消息
     * @return 营地消息
     */
    @Override
    public List<Message> selectMessageList(Message message)
    {
        return messageMapper.selectMessageList(message);
    }

    /**
     * 新增营地消息
     * 
     * @param message 营地消息
     * @return 结果
     */
    @Override
    public int insertMessage(Message message)
    {
        message.setMessageId(IdUtils.randomUUID());
        return messageMapper.insertMessage(message);
    }

    /**
     * 修改营地消息
     * 
     * @param message 营地消息
     * @return 结果
     */
    @Override
    public int updateMessage(Message message)
    {
        return messageMapper.updateMessage(message);
    }

    /**
     * 批量删除营地消息
     * 
     * @param messageIds 需要删除的营地消息主键
     * @return 结果
     */
    @Override
    public int deleteMessageByMessageIds(String[] messageIds)
    {
        return messageMapper.deleteMessageByMessageIds(messageIds);
    }

    /**
     * 删除营地消息信息
     * 
     * @param messageId 营地消息主键
     * @return 结果
     */
    @Override
    public int deleteMessageByMessageId(String messageId)
    {
        return messageMapper.deleteMessageByMessageId(messageId);
    }

    /**
     * 审批时添加消息
     * @param message 消息
     * @return 结果
     */
    @Override
    public int insertMessageByApprove(Message message, String approveType, String approveState, String name) {
        if (message == null) {
            throw new RuntimeException("消息对象不能为空");
        }
        if (message.getCampId() == null) {
            throw new RuntimeException("营地Id不能为空");
        }
        //根据营地Id查询对象信息
        Camp camp = campMapper.selectCampByCampId(message.getCampId());

        message.setMessageId(IdUtils.randomUUID());
        message.setUserId(camp.getUserId());
        message.setType("1");
        if ("1".equals(approveType)) {
            if ("1".equals(approveState)) {
                message.setContent("您上传的【"+camp.getCampName()+"】营地，审核通过。");
            } else {
                message.setContent("您上传的【"+camp.getCampName()+"】营地，审核失败。失败原因是：" +message.getContent());
            }
        } else if ("2".equals(approveType)) {
            if ("1".equals(approveState)) {
                message.setContent("您上传的【"+camp.getCampName()+"】营地的周边景点【"+name+"】审核通过。");
            } else {
                message.setContent("您上传的【"+camp.getCampName()+"】营地的周边景点【"+name+"】审核失败。失败原因是：" +message.getContent());
            }
        } else if ("3".equals(approveType)) {
            if ("1".equals(approveState)) {
                message.setContent("您上传的【"+camp.getCampName()+"】营地的其他项目【"+name+"】审核通过。");
            } else {
                message.setContent("您上传的【"+camp.getCampName()+"】营地的其他项目【"+name+"】审核失败。失败原因是：" +message.getContent());
            }
        } else if ("4".equals(approveType)) {
            if ("1".equals(approveState)) {
                message.setContent("您上传的【"+camp.getCampName()+"】营地的活动【"+name+"】审核通过。");
            } else {
                message.setContent("您上传的【"+camp.getCampName()+"】营地的活动【"+name+"】审核失败。失败原因是：" +message.getContent());
            }
        } else {
            throw new RuntimeException("审核状态类型错误");
        }

        message.setReleaseTime(new Date());

        return messageMapper.insertMessage(message);
    }
}
